﻿using System;
using System.Windows.Forms;
using LayerEntity.Caja;
using LayerEntity.Persona;
using LayerEntity.Sistema;

namespace System2012.Persona
{
    public partial class MantenimientoCuentasBancarias : DevExpress.XtraEditors.XtraForm
    {
        IEPersona per = null;
        public MantenimientoCuentasBancarias(IEPersona persona)
        {
            this.InitializeComponent();
            this.per = persona;
        }

        #region Propiedades
        public IEPersona Persona
        {
            get
            {
                return this.per;
            }
        }
        #endregion
        #region Metodos
        void Save()
        {
            ECuentasCorrientes c = this.ucCuentaCorriente1.GetCuentaCorriente();

            if (c != null)
            {
                c.IdTipoCtaCte = (int) this.CbTipo.EditValue ;
                c.IdPersona = this.per.IdPersona;
                int id = SystemUtils.RecordManagerPersona.SaveAccount(c, this.ucCuentaCorriente1.Operacion);
                if (id > 0)
                {
                    c.IdCtaCte = id;
                    this.per.AddAccountInfo(c);
                    this.RefreshData();
                }
                else {
                    SystemUtils.AlerMessaje("Datos no Actualizados");
                }
            }
        }

        void RefreshData()
        {
            this.gridControl1.DataSource = this.per.GetAccount();
            this.gridControl1.RefreshDataSource();
        }

        private void SetCuentas()
        {
            if (this.per != null)
            {
                this.TxtNumero.EditValue = this.per.NumeroDocumento;
                this.TxtPersona.EditValue = this.per.FullName;
                EDocumento doc = SystemUtils.RecordManagerCommonList.GetDocument((long)this.per.IdTipoDocumento);
                if (doc != null)
                {
                    this.TxtDocumento.EditValue = doc.Abreviatura;
                }
                this.RefreshData();
            }
            else
            {
                SystemUtils.ShowMessaje("Parametro persona es Nulo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        #endregion
        private void MantenimientoCuentasBancarias_Load(object sender, EventArgs e)
        {
            this.ucCuentaCorriente1.LoadMoneda();
            this.SetCuentas();
            this.CbTipo.Properties.DataSource = SystemUtils.RecordManagerPersona.GetTipoCuentaCorriente();
        }

        private void BarManager1ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (e.Item.Tag.ToString() == "Nuevo")
            {
                this.ucCuentaCorriente1.NuevaCuenta();
            }
            if (e.Item.Tag.ToString() == "Guardar")
            {
                this.Save();
            }
            if (e.Item.Tag.ToString() == "Eliminar")
            {
            }
            if (e.Item.Tag.ToString() == "Exportar")
            {
                if (this.gridView1.RowCount > 0)
                {
                    SystemUtils.Exportar("Cuentas_Corrientes", this.gridControl1);
                }
                else {
                    SystemUtils.AlerMessaje("No hay Registros a Exportar");
                }
            }
        }

        private void CambiandoFila(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
            ECuentasCorrientes c = (ECuentasCorrientes)this.gridView1.GetFocusedRow();
            if (c != null)
            {
                this.ucCuentaCorriente1.SetCuentaCorriente(c);
                this.CbTipo.EditValue = c.IdTipoCtaCte;
            }
        }

        private void CustomText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e)
        {
            if (e.Column.Name == "gcBanco")
            {
                object obj = this.gridView1.GetRowCellValue(e.RowHandle, this.gcIdBanco);
                if (obj != null)
                {
                    ECaja c = SystemUtils.RecordmanagerCaja.GetBancos((int)obj);
                    if (c != null)
                    {
                        e.DisplayText = c.nombre;
                    }
                }
            }
            if (e.Column.Name == "gcModena")
            {
                object obj = this.gridView1.GetRowCellValue(e.RowHandle, this.gcIdMoneda);
                if (obj != null)
                {
                    EMoneda c = SystemUtils.RecordManagerCommonList.GetMoneda((int)obj);
                    if (c != null)
                    {
                        e.DisplayText = c.Descripcion ;
                    }
                }
            }
            if (e.Column.Name == "gcEstado")
            {
                object obj = this.gridView1.GetRowCellValue(e.RowHandle, this.gcIdEstado);
                if (obj != null)
                {
                    EEstado est = SystemUtils.RecordManagerCommonList.GetEstadoById((int)obj);
                    if (est != null)
                    {
                        e.DisplayText = est.Descripcion;
                    }
                }
            }
            if (e.Column.Name == "gcTipoCuenta")
            {
                object obj = this.gridView1.GetRowCellValue(e.RowHandle, this.gcIdTipoCtaCte);
                if (obj != null)
                {
                    ETipoCuentaCorriente et = SystemUtils.RecordManagerPersona.GetTipoCuentaCorriente((int)obj);
                    if (et != null)
                    {
                        e.DisplayText = et.Descripcion;
                    }
                }
            }
        }
    }
}